package cn.e4j.modular.api.service;
import cn.e4j.core.dto.impl.Dto;
import cn.e4j.modular.api.mapper.Gwat200Mapper;
import cn.e4j.modular.crm.entity.GwakT;
import cn.e4j.modular.crm.entity.GwcmT;
import cn.e4j.modular.crm.entity.GwcoT;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

@Service
public class Gwat200Service {

    @Autowired
    Gwat200Mapper gwat200Mapper;

    /**
     * 获取区域范围
     *
     * @param inDto
     * @return
     */
    public List<Dto> getMmreData(Dto inDto) {
        return gwat200Mapper.getMmre(inDto);
    }


    /**
     * 判断是否可以取消指派
     *
     * @param inDto
     * @return
     */
    public Dto getGwco(Dto inDto) {
        return gwat200Mapper.selectByGwcodocno(inDto);
    }

    /**
     * 更新状态
     *
     * @return
     */
    @Transactional
    public Dto updateData(Dto inDto) {
        Dto outDto = new Dto();
        UpdateWrapper<GwcoT> wrapper = new UpdateWrapper<>();
        wrapper.eq("GWCODOCNO",inDto.getString("GWCODOCNO"));
        wrapper.eq("GWCOSEQ",inDto.getString("GWCOSEQ"));

        GwcoT gwcoT = new GwcoT();
        gwcoT.setGWCOACTI(inDto.getString("GWCOACTI"));
        gwcoT.update(wrapper);
        return outDto;
    }


    /**
     * 修改意向订单表 gwcm_t
     *
     * @return
     */
    @Transactional
    public void updateGwcm(List<GwcmT> gwcm_tPOs) {
        for (GwcmT o : gwcm_tPOs) {
            //WHERE  gwcment = #{gwcment} AND GWCMDOCNO = #{GWCMDOCNO} AND gwcmseq = #{gwcmseq}
            UpdateWrapper<GwcmT> wrapper = new UpdateWrapper<>();
            wrapper.eq("GWCMENT",o.getGWCMENT());
            wrapper.eq("GWCMDOCNO",o.getGWCMDOCNO());
            wrapper.eq("GWCMSEQ",o.getGWCMSEQ());
            o.update(wrapper);
        }
    }

    /**
     * 获取指派数据
     *
     * @param inDto
     * @return
     */
    public List<Dto> getGwcmPage(Page page,Dto inDto) {
        List<Dto> p = new ArrayList<>();
        if (inDto.getString("status").equals("1")) { //查询未指派
            inDto.put("GWCMACTI", "Y");
        } else if (inDto.getString("status").equals("2")) { //查询已指派
            inDto.put("GWCMACTI", "Z");
        }
        if (inDto.getString("status").equals("1")) { //查询未指派
            p = gwat200Mapper.getGwcmNPage(page,inDto);
            for (Dto o : p) {
                inDto.put("GWCMDOCNO", o.getString("GWCMDOCNO"));
                o.put("details", gwat200Mapper.getGwcmList(inDto));
            }
        } else if (inDto.getString("status").equals("2")) { //查询已指派
            p = gwat200Mapper.getGwaoYPage(page,inDto);
            for (Dto o : p) {
                inDto.put("GWCODOCNO", o.getString("GWCODOCNO"));
                o.put("details", gwat200Mapper.getGwaoYList(inDto));
            }
        }
        return p;
    }

    /**
     * 删除取消指派的订单
     *
     * @param params
     * @return
     */
    @Transactional
    public void delete(Dto params, List<GwcmT> gwcm_tPOs) {
        QueryWrapper<GwcoT> wrapper = new QueryWrapper<>();
        wrapper.eq("GWCODOCNO",params.getString("GWCODOCNO"));
        new GwcoT().delete(wrapper);

        for (GwcmT o : gwcm_tPOs) {
            UpdateWrapper<GwcmT> wrapper1 = new UpdateWrapper<>();
            wrapper1.eq("GWCMENT",o.getGWCMENT());
            wrapper1.eq("GWCMDOCNO",o.getGWCMDOCNO());
            wrapper1.eq("GWCMSEQ",o.getGWCMSEQ());
            o.update(wrapper1);
        }
    }

    /**
     * 获取经销商信息
     *
     * @param inDto
     * @return
     */
    public List<Dto> getGwakBy023(Page page,Dto inDto) {
        return gwat200Mapper.getGwakBy023(page,inDto);
    }

    /**
     * 获取联系人信息
     *
     * @param inDto
     * @return
     */
    public List<Dto> getGwaa(Dto inDto) {
        return gwat200Mapper.getGwaa(inDto);
    }

    /**
     * 获取客户分类
     *
     * @param inDto
     * @return
     */
    public List<Dto> getGwaf(Dto inDto) {

        return gwat200Mapper.getGwaf(inDto);
    }
//
    /**
     * 获取渠道
     *
     * @param inDto
     * @return
     */
    public List<Dto> getGwae(Dto inDto) {
        return gwat200Mapper.getGwae(inDto);
    }

//    /**
//     * 获取行业分类
//     *
//     * @param inDto
//     * @return
//     */
//    public List<Dto> getGwag(Dto inDto) {
//        return gwat200Mapper.getGwag(inDto);
//    }

    /**
     * 判断客户手机号码是否存在
     *
     * @param inDto
     * @return
     */
    public List<Dto> checkPhone(Dto inDto) {
        return gwat200Mapper.checkPhone(inDto);
    }

    /**
     * 获取产品分类
     *
     * @param inDto
     * @return
     */
    public List<Dto> getGwahData(Dto inDto) {
        return gwat200Mapper.getGwah(inDto);
    }

    /**
     * 获取产品系列
     *
     * @param inDto
     * @return
     */
    public List<Dto> getGwaoData(Dto inDto) {
        return gwat200Mapper.getGwao(inDto);
    }

    /**
     * 获取产品信息
     *
     * @param inDto
     * @return
     */
    public List<Dto> getGwamPage(Page page,Dto inDto) {
        return gwat200Mapper.getGwamPage(page,inDto);
    }

    /**
     * 获取产品评价信息
     *
     * @param inDto
     * @return
     */
    public List<Dto> getGwcw(Dto inDto) {
        return gwat200Mapper.getGwcw(inDto);
    }


    /**
     * 保存gwco_t
     */
    @Transactional
    public void insert(List<GwcoT> gwco_tPOs, List<GwcmT> gwcm_tPOs) {
        for (GwcoT p : gwco_tPOs) {
            p.insert();
        }

        for (GwcmT o : gwcm_tPOs) {
            UpdateWrapper<GwcmT> wrapper1 = new UpdateWrapper<>();
            wrapper1.eq("GWCMENT",o.getGWCMENT());
            wrapper1.eq("GWCMDOCNO",o.getGWCMDOCNO());
            wrapper1.eq("GWCMSEQ",o.getGWCMSEQ());
            o.update(wrapper1);
        }

    }

    /**
     * 保存gwak_t
     *
     * @return
     */
    @Transactional
    public void insertGwak(GwakT gwak_tPO) {
        gwak_tPO.insert();
    }

    /**
     * 根据母料号+特征值 获取 子料号
     *
     * @param inDto
     * @return
     */
    public List<Dto> getGwan001(Dto inDto) {
        return gwat200Mapper.getGwan001(inDto);
    }

    /**
     * 根据子料号获取特征分类，特征值
     *
     * @param inDto
     * @return
     */
    public List<Dto> getGwan003(Dto inDto) {
        List<Dto> dtoList;
        if (inDto.getString("gwam005").equals("0")) {
            dtoList = gwat200Mapper.getGwamBy006(inDto);
        } else {
            dtoList = gwat200Mapper.getGwam001(inDto);
        }

        for (Dto dto : dtoList) {
            List<Dto> list = gwat200Mapper.getGwan003(dto);
            dto.put("childs", list);
        }
        return dtoList;
    }

    /**
     * 获取经销商的负责人
     *
     * @param inDto
     * @return
     */
    public List<Dto> getGwaaData(Dto inDto) {
        return gwat200Mapper.getGwaaData(inDto);
    }

}
